Application specific integrated circuits (ASICs) are devices that perform a specific data processing operation. ASICs are often used in place of or in addition to a general purpose microprocessor. A general purpose microprocessor, if it is executing the appropriate instructions, can perform any data processing operation that can be performed by an ASIC. However, an ASIC can typically perform the operation faster because the ASIC does not incur the overhead of fetching, interpreting and executing the instructions. Because of this advantage, ASICs are often used in place of or in addition to microprocessors in systems such as line cards of a switch or router, where operational speed is a critical factor. The present invention will be described with reference to line cards, it being understood that the present invention should not be limited thereto.
Before they begin operation, ASICs of line cards are typically configured by a microprocessor executing instructions of, for example, an operating system. To illustrate, FIGS. 1A and 1B show relevant components of exemplary line cards 10A and 10B, respectively, in block diagram form. Line card 10A is manufactured by mounting a random access memory (RAM) 14, ASIC 16, read only memory (ROM) 20 and microprocessor 22 on printed circuit board 12. ASIC 16 is coupled between RAM 14 and microprocessor 22 via communication links 24 and 26, respectively. Microprocessor 22 is coupled to ROM 20 via communication link 26. Although not shown, each of the communication links 24 and 26 may take form in a plurality of electrically conductive traces formed on the layers and layer-interconnects of printed circuit board 12. The layer-interconnects are vertical pieces of metal that connect traces on different layers of printed circuit board 12. The conductive traces of communication links 24 or 26 can transmit data (e.g., configuration values) between devices (e.g., microprocessor 22 and ASIC 16). ROM 20 stores an operating system executable by microprocessor 22. Components 12-22 on line card 10B are structurally identical to components 12-22, respectively, on line card 10A. Moreover, ROM 20 of line card 10B stores the same operating system that is stored in ROM 20 of line card 10A.
ASIC 16 of line card 10A is structurally identical to ASIC 16 of 10B as noted above. Each ASIC 16 is configured to operate according to any one of at least two modes OM_A or OM_B depending on a multi bit configuration value A or B, respectively, stored in a configuration register (not shown) within ASIC 16. For purposes of explanation only, the present invention will be described with reference to ASIC 16 having just one configuration register, it being understood that the term ASIC should not be limited to devices containing only one configuration register. ASICs and other integrated circuits may operate according to any one of several modes depending on a configuration values loaded into their respective configuration registers.
Returning to FIGS. 1A and 1B, a configuration value, once stored in ASIC 16's configuration register, defines ASIC 16's mode of operation. To illustrate, when a configuration value A is stored in the configuration register of ASIC 16, ASIC 16 will operate in mode OM_A. And when a different configuration value B is stored in ASIC 16's configuration register, ASIC 16 will operate in mode OM_B. ASIC 16 can process data read from RAM 14 via communication link 24 while operating in mode OM_A or mode OM_B. However, the same data read from RAM 14 may be processed differently by ASIC 16 to produce a different result, depending on whether ASIC 16 is operating in mode OM_A or mode OM_B. Because ASIC can operate in any one of at least two modes, ASIC 16 can be used in the manufacture of at least two line cards that function differently.
Each time line card 10A or line card 10B is powered up, started or restarted, the operating system stored in ROM 20 is provided to and executed by microprocessor 22. One purpose of the operating system, when executed, is to select the appropriate configuration value to be stored in the configuration register of ASIC 16. Selection of the configuration value is conditional on line card information (LCI) stored in ROM 20. LCI typically provides information about line card components (e.g., RAM 14) such as their operating characteristics, an identity of the line card manufacturer, serial number, the intended use of the line card (e.g., whether it is to be used as a supervisory line card of a router), etc. Line card information is stored in ROM 20 when line card cards 10A and 10B are first manufactured. Line card information stored in ROM 20 can vary from line card to line card. For example, presume line card information LCIA is stored in ROM 20 of line card 10A and line card information LCIB is stored in ROM 20 of line card 10B, and that LCIA is different from LCIB.
As noted, microprocessor 22 selects the appropriate configuration value to be stored in the configuration register of ASIC 22 based on the LCI stored in ROM 20. FIG. 2 is a flow chart illustrating relevant aspects performed by microprocessor 22 when it first starts executing the operating system stored in ROM 20. More particularly, just after line card 10A or 10B is powered up, microprocessor 22 reads the LCI from ROM 20 as shown in step 32. Microprocessor compares the LCI read from ROM 20 with LCIA. If the LCI read from ROM 20 equals LCIA, then microprocessor 22 provides configuration value A to ASIC 16 for storage in its configuration register as shown in step 36. However, if the LCIA read from ROM 20 does not equal LCIA, then microprocessor 22 provides configuration value B to ASIC 16 for storage in its configuration register as shown in step 38. Because ROM 20 in line card 10A stores LCI equal to LCIA, microprocessor 22 of line card 10A loads configuration value A into the configuration register of ASIC 16. In contrast, because ROM 20 of line card 10B stores LCI equal to LCIB, microprocessor 22 loads configuration value B into the configuration register of ASIC 16. Once configuration value A is stored in the configuration register of ASIC 16 in line card 10A, ASIC 16 operates according to mode OM_A. In contrast, once configuration value B is stored in the configuration register of ASIC 16 and line card 10B, ASIC 16 operates according to mode OM_B. Importantly, FIG. 2 emphasizes the conditional nature of selecting a configuration value for ASIC 16 in both line cards 10A and 10B. In other words, the microprocessor 22 selects the configuration value to be loaded into ASIC 16 based on the LCI stored in ROM 20.
Line cards evolve with time and undergo subsequent redesign for a variety of reasons. The redesign of a line card may require the redesign and/or replacement of the components thereof. ASIC 16 may need to be redesigned to provide additional modes of operations that accommodate changes in other components of the line card. More often than not, ASICs are redesigned to be backwards compatible. To illustrate, presume RAM 14 of line cards 10A and 10B operate according to the double data rate-1 (DDR-1) protocol. ASIC 16, regardless of operating in mode OM_A or mode OM_B, is designed to accommodate the DDR-1 protocol of RAM 14 such that ASIC 16 is capable of reading data from or writing data to RAM 14. Line cards could be manufactured with RAM 14 replaced by a RAM that operates according to the DDR-2 protocol. ASIC 16, however, is incompatible with the DDR-2 protocol. In other words, if RAM 14 of line card 10A or 10B is replaced with a RAM that operates according to the DDDR-2 protocol, ASIC 16 would be incapable of reading data from or writing data to the DDR-2 RAM. However, ASIC 16 could be redesigned so that, when configured by microprocessor 22 as set forth above, ASIC 16 is compatible with the DDR-1 or DDR-2 protocol.
FIGS. 3A and 3B illustrate relevant components of line cards 40A and 40B, respectively, in block diagram form. Line card 40A is the same as line card 10A shown in FIG. 1A with ASIC 16 replaced by ASIC 42. Line card 40B is similar to line card 40A. However, line card 40B includes RAM 44 instead of RAM 14. RAM 44 operates according to the DDR-2 protocol, while RAM 14 operates according to the DDR-1 protocol. ASIC 42 represents a backwards compatible, redesign of ASIC 16 shown in FIGS. 1A and 1B. ASIC 42 has been redesigned to operate according to any one of at least four modes depending on a configuration value stored in its configuration register (not shown). Thus, when configuration value A_DDR-1 is stored in the configuration register of ASIC 42, ASIC 42 will operate in mode OM_A_DDR-1. In this mode, ASIC 42 processes data the same way ASIC 16 processes data when it is operating in mode OM_A. However, ASIC 42, while operating in mode OM_A_DDR-1 is compatible with DDR-1 RAM, but not DDR-2 RAM. When configuration value A_DDR-2 is stored in ASIC 42's configuration register, ASIC 42 will operate in mode OM_A_DDR-2. In this mode, ASIC 42 processes data in the same fashion as ASIC 16 operating in mode OM_A. However, when ASIC 42 operates in mode OM_A_DDR-2, ASIC 42 is compatible with DDR-2 RAM, but not DDR-1 RAM. When configuration value B_DDR-1 is stored in ASIC 42's configuration register, ASIC 42 will operate in mode OM_B_DDR-1. While operating in mode OM_B_DDR-1, ASIC 42 processes data the same way ASIC 16 processes data when it is operating in mode OM_B. However, ASIC 42, while operating in mode OM_B_DDR-1 is compatible with DDR-1 RAM, but not DDR-2 RAM. Lastly, when configuration value B_DDR-2 is stored in the configuration register of ASIC 42, ASIC 42 will operate in mode OM_B_DDR-2. In this mode, ASIC 42 processes data the same way ASIC 16 processes data when it is operating in mode OM_B. However, ASIC 42, when operating in mode OM_B_DDR-2 is compatible with DDR-2 RAM, but not DDR-1 RAM.
Just like ASIC 16, ASIC 42 must be configured each time line card 40A or 40B is powered up, started or restarted. Each time line card 40A or line card 40B is powered up, started or restarted, the operating system stored in ROM 20 is provided to and executed by microprocessor 22. This operating system, when executed, selects the appropriate configuration value (i.e., A_DDR-1, A_DDR-2, B_DDR-1, or B_DDR-2) to be stored in the configuration register of ASIC 42 based on the LCI stored in ROM 20. The operating system of line cards 40A or 40B are identical. Unfortunately, the operating system of line cards 10A or 10B cannot be used in line cards 40A or 40B. The operating system stored in line cards 10A and 10B could be used in line cards 40A and 40B if the operating system of line cards 10A and 10B are modified to accommodate the additional operational modes of ASIC 42. For purposes of explanation, it will be presumed that the operating system of line cards 40A and 40B is the operating system of line cards 10A and 10B after the operating system of line cards 10A and 10B is modified.
As noted, the selection of the appropriate configuration value for ASIC 42 is conditional on LCI stored in ROM 20. For purposed of explanation, presume ROM 20 of line card 40A stores LCI set to LCI_A_DDR-1 while ROM 20 of line card 40B stores LCI set to LCI_B_DDR-2. LCI_A_DDR-1 indicates that the line card has been manufactured with DDR-1 RAM, while LCI_B_DDR-2 indicates that the line card has been manufactured with DDR-2 RAM. FIG. 4 illustrates relevant aspects performed by microprocessor 22 of line card 40A or 40B when microprocessor 22 beings executing the operating system stored in ROM 20. Specifically, in step 52, microprocessor 22 of line card 40A or 40B reads the LCI from ROM 20. The LCI read from ROM 20 is compared to LCI_A_DDR-1. If the LCI read from ROM 20 compares equally to LCI_A_DDR-1, then microprocessor 22 provides configuration value A_DDR-1 to ASIC 42 for storage in its configuration register as shown in 56, and the process ends. If the LCI value read from ROM 20 does not equate with LCI_A_DDR-1, then the process proceeds to compare the LCI read from ROM 20 with LCI_A_DDR-2. If the LCI read from ROM equates to LCI_A_DDR-2, then microprocessor 22 provides configuration value A_DDR-2 to ASIC 42 for storage in its configuration register as shown in step 62, and the process ends. However, if LCI does not equate to LCIA DDR-2, then microprocessor 22 compares the LCI value read from ROM 20to LCI_B_DDR-1. If these two values compare equally, then microprocessor 22, as shown in step 66, provides configuration value B_DDR-1 to ASIC 42 for storage in its configuration register, and the process ends. If the value read from ROM 20 does not equate to LCI_B_DDR-1, then microprocessor 22 provides configuration value B_DDR-2 to ASIC 42 for storage in its configuration register as shown in step 68, and the process ends.
A comparison between FIG. 2 and FIG. 4 shows that the operating system of line cards 40A or 40B is substantially different than the operating system of line cards 10A and 10B. This leads to the conclusion that the operating system of a line card may need to be revised each time the ASIC is redesigned to include additional modes of operation. However, line card manufacturers or purchasers may be reluctant to employ modified line card operating systems. Operating systems, such as those used in line cards, may be qualified thru extensive testing. Line card purchasers may contractually require the line cards they buy to be supplied with a given operating system or be given rights of approval before any new or modified operating system is supplied. Thus, line card manufacturers may not be able to design and build new cards with new ASICs and unilaterally decide to modify or upgrade the operating systems of the line cards to accommodate the new ASICs.
The use of the same reference symbols in different drawings indicates similar or identical items.